package com.jzo2o.common.model.msg;

import cn.hutool.json.JSONUtil;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;

/**
 * 交易状态消息模型类，用于传递交易相关的状态变更信息
 */
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class TradeStatusMsg {

    /**
     * 交易单号（交易系统内部的唯一标识）
     */
    private Long tradingOrderNo;

    /**
     * 业务系统标识（标识消息对应的业务系统）
     */
    private String productAppId;
    /**
     * 订单号（业务系统生成的订单唯一标识）
     */
    private Long productOrderNo;

    /**
     * 第三方支付的交易号（第三方支付平台返回的交易唯一标识）
     */
    private String transactionId;

    /**
     * 支付渠道（如微信支付、支付宝等）
     */
    private String tradingChannel;

    /**
     * 退款单号（退款场景下的唯一标识）
     */
    private Long refundNo;

    /**
     * 支付/退款 状态名称（状态的文字描述，如"支付成功"、"退款失败"）
     */
    private String statusName;

    /**
     * 支付/退款 状态编码（状态的数字编码，用于业务逻辑判断）
     */
    private Integer statusCode;

    /**
     * 扩展信息（存储额外的补充信息，通常为JSON格式字符串）
     */
    private String info;

    /**
     * 创建时间（消息生成的时间戳，单位通常为毫秒）
     */
    private Long created;

    /**
     * 将当前对象转换为JSON字符串
     * @return 对象对应的JSON字符串
     */
    public String toJson() {
        return JSONUtil.toJsonStr(this);
    }
}
